/** represents any type of link between two nodes of a graph
 * @param <LI> The type of information embedded within this link.
 * @param <NI> The type of information embedded within the node connected
 *             to this link.
 * @author Ian Helmke, Dan King
 */
interface ILink<LI, NI> {
  /** Gets the destination node of this link.
      @retun The destination of this link.
   */
  public INode<NI, LI> getDestination();

  /** Gets underlying information about this link. This information
      is specified by the type parameter provided to the interface.
      It could, for example, be an Integer representing the link type,
      or a String represesenting the name of the link, or a Class consisting
      of coumpound data.
      @return Information specific to this node.
  */
  public LI getInfo();

}
